#ifndef mainH
#define mainH

class Ini;
//class CommandParams;
class fbTaskBarIcon;
class FileThread;

class MainFrame : public wxFrame
{
public:
    MainFrame(const wxString& title);
    // event handlers (these functions should _not_ be virtual)
		void onClose(wxCloseEvent &);
protected:
    // any class wishing to process wxWindows events must use this macro
    DECLARE_EVENT_TABLE()
};

class MainApp : public wxApp
{
	public:
		bool terminate_app;
		MainApp(void);
		virtual ~MainApp(void);
    virtual bool OnInit();
		void OnQueryEndSession(wxCloseEvent&);
		void OnEndSession(wxCloseEvent&);
		void Terminate(void);
		void closeMainFrame(void);
		DECLARE_EVENT_TABLE()
	protected:
		wxTaskBarIcon *tbIcon;
		FileThread *fth;
		MainFrame *fMain;			
		bool frame_closed;
		bool terminate_started;
		Ini *ini;
		CommandParams *cp;
		wxSingleInstanceChecker *sic;
};
DECLARE_APP(MainApp);

class fbTaskBarIcon: public wxTaskBarIcon
{
	public:
		fbTaskBarIcon();

    virtual void OnRButtonUp(wxEvent&);
    void onMenuExit(wxCommandEvent&);
		DECLARE_EVENT_TABLE()
};

#if !defined(FINAL)
void myOut(char *);
void myOut(const wxChar *);
#else // !FINAL
inline void myOut(const char *string) {}
#endif // !FINAL

extern wxIcon *icon1, *icon2;


#endif
